package plus.lgx.textsearcher.searcher.extender;

import plus.lgx.textsearcher.config.SearcherConfig;

import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;

/**
 * Interface name: Extender<br>
 *
 * 命中目标后向前后扩展的扩展器的抽象类。
 * 检索字符串时，该扩展器可在检索到目标后执行相应的向前后扩展相应字符的任务。
 * 具体的扩展方式由该类的继承类实现。<br>
 *
 * Create time: 12/14/22 7:18 PM
 *
 * @author lgx
 * @version 1.0
 */
public abstract class Extender {

    /**
     * 当前正在检索的文件的相关属性，包括文件内容、命中目标的索引和文件长度。
     */
    public String content;
    public AtomicInteger index;
    public int off;
    public Matcher m;

    /**
     * 存储本次检索的各项配置信息。
     */
    final SearcherConfig config;

    public Extender(SearcherConfig config) {
        this.config = config;
    }

    /**
     * 根据该类的属性 props 的相关属性和配置信息 config 执行对应的子串扩展。
     * @return 扩展后得到的子串。
     */
    public abstract String extend();

}
